package collection;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;

public class CollectionDemo2 {
    public static void main(String[] args)
    {
        Collection c = new ArrayList();
//        Collection c = new HashSet();
        c.add(new Point(1,2));
        c.add(new Point(3,4));
        c.add(new Point(5,6));
        c.add(new Point(7,8));
        c.add(new Point(9,10));
        c.add(new Point(3,4));
        /*
            集合重写了toString方法，格式为:
            [元素1.toString(), 元素2.toString(), ....]
            如果元素没有妥善的重写toString，则输出集合时内容不够直观。
         */
        System.out.println(c);

        Point p = new Point(1,2);
        /*
            对于Set集合而言，不可以存放重复元素，而是否重复是依靠元素的equals方法
            进行比较的。
            所以如果元素没有妥善重写equals(使用Object提供的equals时为==比较)
            则如果为两个不同对象就算元素内容相同equals比较结果也是false.
            妥善重写后，内容相同的元素是无法存入集合两次的。
         */
        c.add(p);//Point不重写equals则可以存入Set集合,重写了则无法存入
        System.out.println(c);

        Point p2 = new Point(3,4);
        /*
            contains:包含
            boolean contains(Object o)
            判断当前集合是否包含给定元素，若包含则返回true
            集合判断包含元素的逻辑是看该元素与集合现有元素是否存在equals比较
            为true的情况，若存在则集合认为包含该元素
         */
        boolean contains = c.contains(p2);
        System.out.println("包含:"+contains);
        /*
            remove:移除
            boolean remove(Object o)
            从当前集合中删除给定元素,删除的是与给定元素equals比较为true的元素
            注:对于可重复的集合，删除的是第一个与给定元素equals比较为true的元素
         */
        c.remove(p2);
        System.out.println(c);
    }
}
